﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using System.IO;

using Exec;

namespace Core
{
    // 기본 기능이 구비된 플러그인
    public class Core: IPlugIn
    {
        public void Load()
        {
            Console.WriteLine("!Core 플러그인 초기화");
            
            // 명령어 추가
            Comm.Add(this, "cmd", this.Cmd);
            Comm.Add(this, "load", this.Load);
            Comm.Add(this, "windows", this.Windows);
        }

        public bool Cmd(Transaction tn)
        {
            Process p = Process.Start("cmd.exe", "/c " + tn.GetPost(0));
            return true;
        }

        public bool Windows(Transaction tn)
        {
            Process p = Process.Start(tn.GetPost(0), tn.GetPost(1));
            return true;
        }


        // 파일로부터 명령어 입력
        private bool Load(Transaction tn)
        {
            FileStream fi;

            try
            {
                fi = new FileStream(tn.GetPost(0), FileMode.Open);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return false;
            }

            StreamReader si = new StreamReader(fi, System.Text.Encoding.Default);

            string comm;

            do
            {
                comm = si.ReadLine();

                if (comm != null)
                {
                    Console.WriteLine(comm);
                    Manager.Mediate(new Transaction(comm));
                }
            } while (comm != null);

            fi.Close();
            return true;
        }

        public void Unload()
        {
        }

        public string GetPrefix()
        {
            return "core";
        }

        public string GetInfo()
        {
            return "기본 기능이 내장된 플러그인입니다.";
        }
    }
}
